﻿
function isDate (input){
    var reg = /^(?:(?!0000)[0-9]{4}-(?:(?:0?[1-9]|1[0-2])-(?:0?[1-9]|1[0-9]|2[0-8])|(?:0?[13-9]|1[0-2])-(?:29|30)|(?:0?[13578]|1[02])-31)|(?:[0-9]{2}(?:0?[48]|[2468][048]|[13579][26])|(?:0?[48]|[2468][048]|[13579][26])00)-0?2-29)$/;
        if(reg.test(input)){
            return true;
        }else{
            return false;
        }
    }
    /* 功能：效果（复制Excel上的一列数据，将其Ctrl+V来填充表单上的表格的一列）
    可以方便用户输入大数据量的表单，节省大量的时间
    作者：梁宁（ppriln）
    输入参数：ctrlCid：控制适用范围的容器客户端id
    创建日期：2009-8-25
    用法说明：形如<asp:GridView ID="gv" onpaste="bodyOnPaste();"> */
function bodyOnPaste(ctrlCid) {
        event.returnValue = false;
        var srcObj = event.srcElement;
        if ((srcObj.tagName == "INPUT" || srcObj.tagName == "TEXTAREA")
	&& (srcObj.readOnly == false || srcObj.contentEditable)
	&& !srcObj.disabled) {
            var str = window.clipboardData.getData("Text");
            var str = str.replace(/(^\s+)|(\s+$)/ig, "");
            var clipDataArr = str.split(/\r(?=\n)/);
            var tb = document.getElementById(ctrlCid);
            var rIdx = srcObj.parentElement.parentElement.rowIndex;
            //var cIdx = srcObj.parentElement.cellIndex;
            //因为ie下cellIndex有Bug，所以改用以下写法；
            var cIdx = $("td", srcObj.parentElement.parentElement).index(srcObj.parentElement);
            var nextTxt = null;
            for (var i = rIdx; (i < tb.rows.length) && (i - rIdx < clipDataArr.length); i++) {
                nextTxt = $("INPUT", $(tb.rows[i].cells[cIdx]));
                if (nextTxt.length > 0) {
                    nextTxt = nextTxt[0];
                    if (nextTxt && (nextTxt.tagName == "INPUT" || nextTxt.tagName == "TEXTAREA")) {
                        if (!nextTxt.disabled)
                            nextTxt.value = clipDataArr[i - rIdx].replace(/(^[\n\"\']+)|([\n\"\']+$)/ig, "");
                    }
                }
            }
        }
    }
    // 对Date的扩展，将 Date 转化为指定格式的String 
    // 月(M)、日(d)、小时(h)、分(m)、秒(s)、季度(q) 可以用 1-2 个占位符， 
    // 年(y)可以用 1-4 个占位符，毫秒(S)只能用 1 个占位符(是 1-3 位的数字) 
    // 例子： 
    // (new Date()).Format("yyyy-MM-dd hh:mm:ss.S") ==> 2006-07-02 08:09:04.423 
    // (new Date()).Format("yyyy-M-d h:m:s.S")      ==> 2006-7-2 8:9:4.18 
    Date.prototype.Format = function (fmt) { //author: meizz 
        var o = {
            "M+": this.getMonth() + 1,                 //月份 
            "d+": this.getDate(),                    //日 
            "h+": this.getHours(),                   //小时 
            "m+": this.getMinutes(),                 //分 
            "s+": this.getSeconds(),                 //秒 
            "q+": Math.floor((this.getMonth() + 3) / 3), //季度 
            "S": this.getMilliseconds()             //毫秒 
        };
        if (/(y+)/.test(fmt))
            fmt = fmt.replace(RegExp.$1, (this.getFullYear() + "").substr(4 - RegExp.$1.length));
        for (var k in o)
            if (new RegExp("(" + k + ")").test(fmt))
                fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length)));
        return fmt;
    }
    /**
    * 获取函数名称
    *
    * @param {Function} func 函数引用
    * @return {String} 函数名称
      调用:console.trace();
    */
   /*
    function getFunctionName(func) {
        if (typeof func == 'function' || typeof func == 'object') {
            var name = ('' + func).match(/function\s*([\w\$]*)\s*\(/);
        }
        return name && name[1];
    }

    if (!('console' in window)) {
        window.console = {};
    }
    if (!console.trace) {
        console.trace = function () {
            var stack = [],
            caller = arguments.callee.caller;
            while (caller) {
                stack.unshift(getFunctionName(caller));
                caller = caller && caller.caller;
            }
            alert('functions on stack:' + '\n' + stack.join('\n'));
        }
    }*/
    function CreateSelectedItem(text) {
                var str ="<A id='mailone' onselectstart='return false;' class='mailAddressOffR' unselectable='on'>"
            +"<SPAN id='mailone_s' unselectable='off'>"+text+"</SPAN>"
            + "<INPUT style='OVERFLOW-X: visible; DISPLAY: none' name='mailoneInput' value='" + text + "' />"
           // +"<SPAN><IMG id=mailimgedit onclick=JS.autoCompleteMailReceiver.modifyMailReceiver(this);event.cancelBubble=true; src='/image/proj/EditContact.gif'></SPAN>
            + "<SPAN><IMG id='mailimgdelete' onclick='$(this).parent().parent().remove();' src='/image/proj/DeleteContact.png'></SPAN>"
            +"</A>";
            return str;
    }
